package model.bean;

import static org.junit.Assert.*;

import it.mrcrack.exception.DataFormatException;

import java.util.GregorianCalendar;

import org.junit.Test;

public class MisuraTest {

	@Test
	public void testMisura() {
		System.out.println("Testo il costruttore senza parametri");
		Misura m=new Misura();
		assertEquals(m.getOra(),null);
		assertEquals(m.getMisura(),0,0);
		assertEquals(m.getDurata(), 0, 0);
		assertEquals(m.getErrore(), -1, 0);
	}

	@Test
	public void testSetGetOra() {
		System.out.println("Testo setOra() e getOra()");
		Misura m=new Misura();
		GregorianCalendar ora=new GregorianCalendar();
		try {
			m.setOra(null);
		} catch (DataFormatException e) {
			assertEquals(e.getMessage(),"L'ora della misura non puo' essere null");
		}
		assertEquals(m.getOra(),null);
		try {
			m.setOra(ora);
		} catch (DataFormatException e) {
			fail(e.getMessage());
		}
		assertEquals(m.getOra(),ora);
		assertNotSame(m.getOra(), ora);
	}

	@Test
	public void testSetGetDurata() {
		System.out.println("Testo setDurata() e getDurata()");
		Misura m=new Misura();
		try {
			m.setDurata(-1);
		} catch (DataFormatException e) {
			assertEquals(e.getMessage(),"La durata della misura non puo' essere minore di 1");
		}
		assertEquals(m.getDurata(), 0, 0);
		try {
			m.setDurata(1);
		} catch (DataFormatException e) {
			fail(e.getMessage());
		}
		assertEquals(m.getDurata(), 1, 0);
	}

	@Test
	public void testSetGetMisura() {
		System.out.println("Testo setMisura() e getMisura()");
		Misura m=new Misura();
		try {
			m.setMisura(-1);
		} catch (DataFormatException e) {
			assertEquals(e.getMessage(),"La misura della misura non puo' essere minore di 1");
		}
		assertEquals(m.getMisura(), 0, 0);
		try {
			m.setMisura(1);
		} catch (DataFormatException e) {
			fail(e.getMessage());
		}
		assertEquals(m.getMisura(), 1, 0);
	}

	@Test
	public void testSetGetErrore() {
		System.out.println("Testo setErrore() e getErrore()");
		Misura m=new Misura();
		try {
			m.setErrore(-2);
		} catch (DataFormatException e) {
			assertEquals(e.getMessage(),"L'errore della misura non puo' essere minore di 0");
		}
		assertEquals(m.getErrore(), -1, 0);
		try {
			m.setErrore(1);
		} catch (DataFormatException e) {
			fail(e.getMessage());
		}
		assertEquals(m.getErrore(), 1, 0);
	}

	@Test
	public void testImpostato() {
		System.out.println("Testo impostato()");
		Misura m=new Misura();
		GregorianCalendar ora=new GregorianCalendar();
		try {
			assertFalse(m.impostato());
			m.setOra(ora);
			assertFalse(m.impostato());
			m.setMisura(1);
			assertFalse(m.impostato());
			m.setDurata(1);
			assertFalse(m.impostato());
			m.setErrore(0);
			assertTrue(m.impostato());
		} catch (DataFormatException e) {
			fail(e.getMessage());
		}
	}
}
